package main
import (
	"os"
	"fmt"
	"io"

)
//拷贝文件：定义copyFile函数，传入源文件路径和目标文件路径，返回一个error类型的值
func copyFile(srcFilePath string,destFilePath string)error{
	//打开源文件 Open函数会返回两个值：第一个值是打开的文件句柄，第二个值是错误信息：如果没有错误，openErr的值为nil，如果有错误，就会将错误信息存入openErr
	srcFile,OpenErr := os.Open(srcFilePath)
	if OpenErr != nil{
		fmt.Println("打开文件失败，错误信息",OpenErr)
		return OpenErr
	}
	defer srcFile.Close()
	
	//创建模板文件
	destFile,createErr := os.Create(destFilePath)
	if createErr != nil {
		fmt.Println("创建文件失败，错误信息：",createErr)
		return createErr
	}
	defer destFile.Close()
	//使用io.Copy拷贝文件内容：Copy函数要传入两个参数，分别为：目标文件句柄和源文件句柄。注意顺序不能乱
	_,copyErr := io.Copy(destFile,srcFile)
	if copyErr != nil{
		fmt.Println("拷贝文件失败，错误信息：",copyErr)
		return copyErr
	}
	//同步文件内容到磁盘
	err := destFile.Sync()
	if err != nil {
		fmt.Println("同步失败，错误信息：",err)
		return err
	}
	return nil
	//同步重命名
	// err = os.Rename("D:/test001.txt","D:/test002.txt")
	// if err != nil {
	// 	fmt.Println("重命名失败，错误信息：",err)
	// } else {
	// 	fmt.Println("重命名文件成功")
	// }
	}
func main(){
// 	srcFilePath := "D:/test001.txt"
// 	destFilePath := "D:/test002.txt"
// 	err := copyFile(srcFilePath,destFilePath)
// 	if err != nil {
// 		fmt.Println("拷贝文件失败，错误信息：",err)
// 	}else{
// 		fmt.Println("拷贝文件成功")
// 	}
// }


// err := os.Rename("D:/test001.txt","D:/test002.txt")
	// if err != nil {
	// 	fmt.Println("重命名失败，错误信息：",err)
	// } else {
	// 	fmt.Println("重命名文件成功")
	// }


	// _,err := os.Stat("D:/test002.txt")
	// if os.IsNotExist(err){
	// 	fmt.Println("文件不存在")
	// }else if err != nil{
	// 	fmt.Println("发生了其他错误",err)
	// }else{
	// 	fmt.Println("文件存在")
	// }

	err := os.Remove("D:/test002.txt")
	if err != nil {
		fmt.Println("删除文件失败：",err)
	} else {
		fmt.Println("删除文件成功")
	}
}
